package com.fjwt.gz.db.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.Version;
import com.fjwt.gz.core.model.BaseModel;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 卡券活动信息表
 * </p>
 *
 * @author shiyonghao
 * @since 2025-04-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("t_award_coupon")
public class AwardCouponEntity extends BaseModel {

    public static LambdaQueryWrapper<AwardCouponEntity> gw(){
        return new LambdaQueryWrapper<>();
    }

    /**
     * 卡券id
     */
    @TableId(value = "coupon_id", type = IdType.AUTO)
    private Long couponId;

    /**
     * 出资方id，为空时平台出资
     */
    private Long payAuthId;

    /**
     * 卡券名称（如：满50减10）
     */
    private String couponName;

    /**
     * 卡券名称副标题（解释说明）
     */
    private String couponDes;

    /**
     * 预算金额，单位分
     */
    private Integer couponAmount;

    /**
     * 卡券数量
     */
    private Integer couponNum;

    /**
     * 卡券领取数量
     */
    private Integer couponGet;

    /**
     * 活动类型：
1 支付宝满减活动 2 支付宝随机减活动 
3微信满减活动 4微信随机减活动 
5微信代金券   6微信商家券
     */
    private Integer couponType;

    /**
     * 活动开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;

    /**
     * 活动结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;

    /**
     * 券领取后，n天内可用（在活动有效期内）
     */
    private Integer availableDays;

    /**
     * 状态 0草稿 1配置中（下线）  2配置完成（上线）  3 已过期  4：已对账成功 5：对账失败
     */
    private Integer state;

    /**
     * 活动备注（卡券核销规则）
     */
    private String remark;

    /**
     * 机构ID
     */
    private String agentNo;

    /**
     * 一级机构号
     */
    private String agentNo1;

    /**
     * 二级机构号
     */
    private String agentNo2;

    /**
     * 三级机构号
     */
    private String agentNo3;

    /**
     * 四级机构号  如果机构号为空则写 0
     */
    private String agentNo4;

    /**
     * 批次号
     */
    private String batchNo;

    /**
     * 乐观锁
     */
    @Version
    private Integer version;

    /**
     * 出资方配置活动信息
     */
    private String payConfig;

    /**
     * 卡券面值
     */
    private Integer couponPrice;

    /**
     * 起付金额（满多少元试用）
     */
    private Integer payAmount;

    /**
     * 是否限卡支付：0不限制卡支付 1限制邮储借记卡支付(储蓄卡) 2 限制邮政贷记卡（信用卡）
     */
    private Integer isRestrictBank;

    /**
     * 活动期间每个用户可领取最大数量
     */
    private Integer everyoneMaxNum;

    /**
     * 立减活动随机减，减价开始区间
     */
    private Integer priceStart;

    /**
     * 立减活动随机减，减价结束区间
     */
    private Integer priceEnd;

    /**
     * 活动期间单天预算发放上限
     */
    private Integer everydayMaxNum;

    /**
     * 对账文件oss记录ID
     */
    private Long billOssRecordId;

    /**
     * 对账失败信息
     */
    private String billErrorMsg;

    /**
     * 更新建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updatedAt;

    /**
     * 创建时间
     */
    @TableField(value = "created_at")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createdAt;

    /**
     * 创建者id
     */
    private Long createdUid;

    /**
     * 指定商户号
     */
    @TableField(exist = false)
    private String  mchNo;

    /**
     * 指定验证码
     */
    @TableField(exist = false)
    private String  code;

    /**
     * 周期性限制中奖次数（period_type != 0时有效）
     */
    @TableField(exist = false)
    private Integer periodTimes;

    /**
     * 同一用户周期性次数限制参与(0不限制， 1限每日，2限每周，3限每月)
     */
    @TableField(exist = false)
    private Integer periodType;
}
